#pragma once
#include <game/Config.h>
#include <CompilerFeatures.h>

#include <lib3d/Application.h>

ARELLO_GAME_NAMESPACE_DECL_START

class Root;

class GameApplication
	: public liba::lib3d::Application
{
public:
	GameApplication(const std::string & caption, const std::string & cmd_line);
	GameApplication(const std::string & caption, int sx, int sy, int resizeable );
	virtual Root* GetRoot() = 0;
	virtual bool LifeCycle(time_float delta_time) LIBA_OVERRIDE;
	virtual bool render() LIBA_OVERRIDE;
protected:
	virtual void on_loading_start() LIBA_OVERRIDE;
	virtual void on_loading_finish() LIBA_OVERRIDE;
};

ARELLO_GAME_NAMESPACE_DECL_END	